UUDWin development history UUDWin developed by Mark Spankus Thanks to the following people for bug reports & suggestions Bernie Brouchoud Gene Cook John Gado TIG! Paul Liss --------------------------------------------------------------------- --------------------------------------------------------------------- ~10/1/95 - Create UUDdos/unix/Amiga because I just can't find a good decoder that just works! ~1/1/96 - Create UUDwin because my DOS challenged friends want GUI ~4/12/96 - Create/Converted/Converged/Updated UUD dos to UUD win shell app. - Start recorded history 7/8/96 - 7/10/96 - Fixed short file when decoding BASE64. Start64() was wrongly adding 1st line length twice. - Added support for Quoted-Printable encoding - Fixed Extract to flag xxdecode & qpdecode as having done something - Recursive check of subject for part numbers when initial scan shows expected > 70. Should fix files with part & date most of the time. - Disallow subjects that have multiple "/" or "." in them. Prevents date & web address from becoming subject. - Additional checking for end of mime section for QP - Removed plain/text part detection to fix QP bug - Added multifile select to fileopen dialog 7/11/96 - Fixed problem w/ BASE64 decode where decode would stop before end of detected part. (again, new bug) - Fixed GPF when scanning subject starting with "Part" w/o part numbers. - Added support for multiple messages w/ same encoded name when the number of parts differ - Added "grayed" items in listbox to show parts that don't have detected beginnings - Fixed extract dlg skip flag logic - Saved path of current dir on open file 7/14/96 - Added support for input files w/ data encoded w/ same name but different type (app vs image etc.) - Fixed uudecode bug where 2nd last line not ' or space causing short file - End UU message part when 'end' detected, don't rely on next mesg part - Fixed Genfile which screwed up on empty destfile & subject when decoding QP - Fixed buffile GetLength() to return correct length even before buffer written to disk (oops) - Added mime-part detection to start on Content-Transfer-Encoding too. - Added PC CR/LF translation to QP decoded text (in preferences) 7/16/96 - Added Binhex decode finally. Automatically chooses larger part RSRC/DATA when decoding non-macbinary mode (only mode supported now) - ValidateFilename now truncates to 8 chars + extension :-( - Fixed complete multipart uucode data listed as incomplete 7/21/96 - Added Launched App tracking to delete extracted temp file when app finishes - Fixed GPF when subject line contains only part numbers (no text) 8/07/96 - Fixed subject parser to exclude subject filename from part number check - Enhanced filename validator to remove multiple dots, trailing dots, and keep existing embedded trailing filename numbers when possible. - now reads filenames from uucode begin line that have spaces when no dot found - Extract Dlg wasn't setting dest dir when selected from listbox, defaulted to root of current drive. Version 1.07 8/08/96 - Wrote my own buffered ReadString function that handles ,, & line termination to fix problem with only terminated lines. 8/13/96 - Began support for headerless files. Now detects data when subject specifies a files, but no headers are present. Base64, binhex works. - Started detection of file type from encoded data 8/17/96 - Added 20 of the most common file types to the detect data routine. Can check uucode, xxcode, base64 for these files. Filetype include Jpeg, Gif, PNG, BMP, Zip, Lha, Zoo, Arj, Wav, Au, VOC, AIF, MPEG, AVI, Doc (word2,6), EPS,EXE,HLP - Added support for indented files. Can now decode files that have been shifted over by mailer programs. Allows space, tab, -, >, in indent field. Added preference item to disable this feature as it can screw up & isn't used too often. 8/18/96 - Added Clipboard (paste) support. Added Edit/clear, paste, del, & rename menu. - Made buttons larger 8/20/96 - Added DEL function, to remove individual files from input files list. Correctly updates output files list. - Updated QP decode to handle trailing spaces on line ending w/ = 8/21/96 - Added rename operation on destination filenames 8/22/96 - Finally hooked up preferences. Now saves toolbar & status bar state too - Detects EXE files & warns before exec-ing them to prevent viri - Now deletes temp files when exec fails - Added better out-of-memory handling - Disallow rename to invalid filename - Fixed subject parser to ignore subjects found of just extensions 8/24/96 - Some files weren't shown in output list during scan (fixed) - Added background processing to extract routine to allow the system to run - Fixed redraw dialog problem during processing - Fixed GPF when ESC/Alt-F4/close pressed while extracting/scanning files - Corrected lockup on paste when clipboard data very large 8/25/96 - Fixed clipboard multiple paste problem, file was being cleared when appending - Most Base64 files are now correctly flagged as complete. 8/30/96 - Rewrote subject part number parser. Now gets it right for all files I have however, previous fixes no longer apply. - Discovered bizarre (MAC?) uuencoding scheme. Modified uutable to work with it - Fixed Extract MRU list to allow longer path/directories to be entered. - Rewrote inviso window in MFC - Added bizarre EOL support for an encoded test file I have. How this file was created is beyond me. However it'll flag each line as"too long" 9/03/96 - Discovered changes made earlier prevent decoding of multiattach file This affects headerless files, type query, subject parser 9/04/96 - Added data node dump routine for debugging. Discovered several problems. - Fixed parsing problems. Should work with multiple files spanning multiple messages w/o filenames. Should also work with headerless base64 files. - Fixed clipboard paste problem. Multiple pastes were not updating data nodes properly, although files usually decoded successfully - Appledouble base64 parts given extension of .apl always - Files without any extension now given one if filetype is determined - Excludes dates as part numbers in subject line - Subject parser now excludes files with trailing "." w/o extension 9/05/96 - Fixed problems that could occur with low disk space for temp files - Set shared mode when reading input files, so other apps can update w/o getting write failure 9/07/95 - Started learning WinHelp link format 9/09/96 - Figured out how to add support for Paste File. So now you can copy FILES from filemanager/explorer via the clipboard instead of just text - Finished Files: selection in Extract dlg. Now does wildcard matching and sets radio buttons/focus correctly. 9/11/96 - If you entered a new, but existing directory in extract dlg, it wasn't being added to MRU list (fixed). 9/16/96 - Hooked up "Set Working Dir" preference. All temp files now written to that directory, unless invalid at startup. 9/18/96 - Fixed problem with multiple base64 files spread across multiple parts. i.e. 24 files in 9 messages where 6 of the files start in one message and finish in another. It only worked for 1 file split among multiple messages. - Found very old bug that made base64 extract very slow when there were many files in a message stream. A flag wasn't getting set that extract completed. It was looping through all remaining data nodes, every time. UU/XXCode correctly set the flag. 9/19/96 - Fixed same problem with multiple uucoded files split in multiple messages. - Hooked up automatic file extensions. Made detection BMP more selective. 9/23/96 - Started work on making UUDWin a Drop-Server with success! Cool. - Played with context sensitive help, & dropped it as not useful for this app. - Recently finished initial help file and updated About menu to match. - Added "Assume Sorted Order" preference as a last chance decode for bogus subjects. - Removed "MacBinary" pref, as I'll never use it & don't feel like writing it. 9/24/96 - Moved file selection & dropserver code into listbox. Made it work like FileManager 9/25/96 - Found bug with BinHex & autoextension. A variable wasn't being initailized - Finished Drag file support 9/26/96 - Added right mouse button popup file info/status display instead of dialog - Added indent processing to Base64 header decode, fixing indented decode bug 9/27/96 - Added "Always on Top" menu item - QueryExtension now works with bizarre MAC uuencoding scheme 10/09/96 - Added progress bar to file open operations - Added Yes All/No All to Overwrite File? dialog - Fixed buffile getposition() to compensate for buffered reads/writes - Added Continue Scan operation for part parser - Made popup info sticky on Win3.1 like Win95 10/13/96 - Stores termination line number for parts to make continue operations work - Added progress bar to extract operations too 10/18/96 - Enhanced part end detection for Base64 - Added file monitoring for input files to auto detect additional data when selected. Useful when downloading msgs & appending to existing file. 11/15/96 - Fixed invalid pointer when scanning Mime header x-msvideo - Fixed progress bar to handle files > 21MB (winzip fails) 11/21/96 - Fixed invalid pointer when scanning Mime header x-msaudio and others - Fixed ancient buffer overrun by 1 bug when decoding. Causes very rare failure - Now correctly decodes last line of uu files that have blank line between every line! Yet another mutant format handled successfully - Speed test with WinZip, uudeview show UUDWin is ~2x faster!(& doesn't crash) 11/24/96 - Added MID (midi) file detect type. Made EXE type more selective. Modified QueryType to better detect uucode vs mime. Made extract progress bar draw to 100%. - Added Ctrl+Del to remove selected outfiles from the list 11/26/96 - Buffile problem resulted in all $FF's encountered in infile to be ignored, causing creeping pointer offsets. Eventually last outfile line not decoded. - Compiler bug caused AVI detection to fail for UU,XX files 11/27/96 - Added another MPEG variant to detect type. - Excluded subject from part number search for the new detect routine too. - Added mime type audio/midi 11/28/96 - Minor tweaks to app launch code to handle launching apps themselves - Popup info type now shows correctly for multipart files - Detect uucode section line as a msg header too - Changes to subject parser to allow part number as very 1st item in subj line 12/10/96 - End Mime when uucode detected to fix broken header - Add detection of "Part x/y" to part number parser 12/17/96 - Now generates unique filenames for duplicate output files by appending # based on original filename. This may cause other later files to be renamed 12/23/96 - Files grayed/red even though OK when duplicate messages added with differing case destination file names. (fixed) - Popup info states missing part 1 for single part mime w/o subject due to "-1" beginning message number. (fixed) - Now doesn't add multiple msg starts when encountering multiple hits on same Mime header. - Auto extension now works for nodes w/o filenames & generated filenames 12/26/96 - Message indent wasn't being set correctly for 1st file in multifile message - Other minor indent detection fixes. Safer to leave enabled all of the time - Added saving of last used filemask selection in fileopen dlg finally - Added Common Files .txt & .htm to filemask choices - Added .RAR detection - Now applefile part usually has same prefix as filename instead of filexx.apl 12/28/96 - Fixed problem in release version causing file position counter to be low causing short extractions (only happens after line longer than 150 chars) 1/1/97 - Enhanced .ARJ detection. Added PCX, TIF, WRI detection - Fixed help tags, wrote more help. - Fixed command line directory specification Version 1.08 1/5/97 - Reworked subject parser again - Added more MIME ID matching code to recognize/differentiate parts - Rewrote App discovery/launch code. Can now find app before extract. Also fixed default launcher. Experiment with ShellExecute() to allow DDE. - Help file updates - No longer assumes all .XLS, .PPT are really .DOC. Also .DLL are not .EXE - Minor fixes to preferences, extract dlg. - ScanFile() mods to better handle indent detection - Added estimated extract size info to output files listbox. Usually accurate within 2%. - Allow Mime html file to generate .htm output files instead of .txt - Fixed delete output files to delete 0/n nodes & nodes w/o output files - Enhanced message boxes to include more information. - Fixed popup info app type when 0th node differs from actual data type. Was wrongly showing txt instead of say jpg. 1/6/97 - Got a lucid QuickTime spec, added MOV filetype detection again - A one line change now allows short 1 line UU/XXCode files to be extracted. It always worked, it just didn't think it worked & deleted it right away :-( - Some MAC app is wrapping MIME headers in mid header. This could cause some tricky problems if it is part of the spec to allow it. I'll have to check. 1/9/97 - Added AbortKey for scanning & extraction. - More helpfile info. Didn't find anything legal about wrapped mime-headers! - Worked on app launch. Back to WinExec() only. Use module name if window name is null in messageboxes. Delayed window creation detection. - Added 256 color icon, nifty neeto. - Nasty Win3.1 GPF if 1st entry in outfile listbox renamed & pos changed 1/11/97 - Finished command line extract - Mods to allow headerless B64 decodes - Added unsorted list menu option - Don't delete all entries when updating listbox - Converted infiles size to display in K bytes like outfiles 1/27/97 V1.10 - Added resizable log window, error msgs & status added to log window - Change handling of terminated files. No longer generate error msgs - Changed CRC calculation in uudecode to ignore lines with extra characters following - Progress bar now uses inverted text & hilite colors instead of custom color - Outfiles listbox no longer clears selections when new files parsed or reparsed - Added PDF type detection - Added recursive encoding detection & extraction 1/31/97 - Added automatic correction of duplicate "." corruption of UUfiles. I've seen several posts with these single errors now. - Updated Help file, added hyperbitmap help. - Set current extraction dir for recursively encoded files too, not temp dir. (For /Extract /Outdir=* filename, where filename doesn't match) 2/6/97 - Finished up help file - Added UnInstall commandline option - Added self launch detection, file added to clipfile 2/14/97 - Fixed PCX recognition (compiler bug) 2/26/97 - Allow .SCR .DRV as EXE type 2/28/97 - Fix open file handle bug with recursively encoded clipboard file 3/4/97 - Fix clipboard recursive multipart file GPF 3/9/97 - Fix number parse bug, was only picking up last digit of 1st number i.e. "8 of 28" instead of "28 of 28" - Now uses filename in subject of headerless Base64 for filename if present - Popup info finds correct file type for multipart multimessage files - When duplicate multipart messages are encountered of larger size, logic will choose the larger piece, except this is wrong for last piece. So new logic added to drop existing or newer based on what was previously dropped. It isn't fool proof, but will work when messages come in somewhat sorted order. 3/13/97 - Added line parser for pasted data when EOL has been erroneously removed. This happens if you copy data from a cc:mail message to the clipboard, and paste it into uudwin. cc:mail decides to remove all EOL in the encoded data block. Version 1.14 3/14/97 - Extraction error occurred when the autogen extension did not match case of name embedded in section identifier of 2nd or greater part which was encountered 1st in a uuarchive. It didn't match the filename to extract. 3/22/97 - Several small buglets. Duplicate file rename now works for multipart files. Some B64 files no longer flagged as incomplete when really complete. App window pops to visible screen if restored settings initialize it offscreen. Help file update. Version 1.16 released 3/28/97 - Extraction fix for headerless base64. If 1st lines were too long it was ignored. - Show extraction errors in extract dialog extractions too. - Help file link fix. Version 1.17 4/07/97 - When generating filenames for existing files, use alpha count instead of numeric 4/22/97 - Multiple files in multiple messages were listed in red when the last part had multiple messages. The msg counter was counting all parts of last part. 4/23/97 - Clipboard scans from the end of the last complete message instead of rescanning entire file each time a paste operation is performed. Version 1.18 4/26/97 - Updated subject parser to match empty messages generated from some MIME encoders - When /UnInstall ing, the uudwin.ini was being recreated at termination! - Win95 detector was broken 4/27/97 - Added DDE operations clear, purge, quit, extract 4/29/97 - Fixed estimated extraction size for multipart multifile messages when the type is unknown. Was counting all parts through the end. - Create directory now works with network specifiers '\\host\vol\dir' - When an App isn't found by the file extension, find it by the default extension i.e. .A01 (not found) = .ARJ (found) - Added application name in registry for DDE server name in case EXE is renamed. 4/30/97 - UUDWin wasn't always writing current settings on exit! - Added clipboard copy as file. Also copies known windows data types as CF_TEXT, CF_WAVE, CF_DIB, CF_TIFF to clipboard. File is also copied as CF_HDROP - Added support for CF_HDROP multifile paste operation. - Fixed error in uucode autocorrector when all lines in file contain extra chars. 5/1/97 - Genfilename now considers filename different if extension differs. Now when gen- ing filenames, there may be file01.txt, file01.jpg, file01.htm - When dropped or copied file is deleted, remove it from the clipboard too. - QPdecode was whizzing right past the end of section into the next one sometimes! 5/2/97 - Progress bar percentage calculated correctly on multipart multifile messages - Speed optimizations/386 show 200% speed increase & 25% smaller! - DDE termination cleanup - Fixed XXdecode for data < 45 bytes long Version 1.20 5/10/97 - Fixed extract/copy on Win NT4, paste to desktop now works - Added additional MIME app types - Removed busy-loop in drag/drop operations - Various enhancements to file paste processing 5/13/97 - Fixed GPF when deleting input files. Broke ~V1.19 6/1/97 - Fixed autoscan & size display for input files >128K. Broke ~V1.19 6/2/97 - Create new temp dir if specified in Prefs automatically - Fail Dir creates when dirname is longer than 8.3 & is last part of dirname gets around MFC bug - Remove monitored file from inputlist if file gets smaller or disappears! 6/7/97 - Now handles wrapped Mime filenames, which are technically illegal! - Nasty problem fixed with duplicate names generated by truncation in multiple files, was not dropping some duplicate parts as it should. - Correlates multifile truncated filenames, so they are given the same base name. This keeps multipart multifile files together when received out of order. Otherwise file01.r00 and file01.r01 could be from different archives. However, can no longer have file01.txt, file01.gif unless part of same message group 6/8/97 - UUdecoder wasn't reporting line errors (short, crc, long) - Initial support for MIME text/plain - now you can read those message comments! 6/9/97 - Lots of little buglets fixed. Some added recently. recursive filename gpf, better type detection for UUE, tracks linenumber when monitoring files for error reporting, shows original long filename in popup-info, 6/10/97 - More minor bugs found. Better handling of TEXT parts. Files in MIME messages with the same subject could be tossed as duplicate when there were multiple parts inline. Estimated size works a bit better with certain messed up files. BMP detection a little less specific. When extracting after drag source, don't let other add operations occur. I inadvertently made this a multiple reentrant program, but it never seemed to hurt anything... - QueryType now checks more than one line to determine encoding - NonSorted Outfiles scroll last entry into view if you're at the botom of the list and another file gets appended. Version 1.22 6/12/97 - Bug in QueryType fixed, twice - Added .mp3 detection for many files - Added Append to One File option in Extract Dlg - Another duplicate part detection method added - Added limited drag support to Winfile - If subject has part number which doesn't correspond to UU section marker, use section marker if expected parts match. Fixes invalid message order in subj. - Updated Help file Version 1.24